package LeetCodeTest.BFS;

import LeetCodeTest.Node;

public class BFSSolution {
    /**
     * 解决思路：使用栈的思维
     * 定义一个top变量，初始值为-1，表示栈空
     * 遍历stringBuffer，设置一个哨兵元素，用于存储stringBuffer中第top个元素，
     * 如果第top个元素，与当前遍历到的元素一致那么出栈，否则当前元素进栈
     * 如果top小于0，那么直接将当前元素入栈，
     * stringBuffer中有delete方法
     * @return
     */
    public StringBuffer removeDuplicates(String S) {
        int top = -1;
        StringBuffer stack = new StringBuffer();
        for (int i = 0; i < S.length(); i++) {
            char temp = S.charAt(i);
            if (top<0){
                stack.append(temp);
                top++;
            }else if (stack.codePointAt(top) == temp){
                stack.deleteCharAt(top);
                top--;
            }else {
                stack.append(temp);
                top++;
            }
        }
        return stack;
    }

    /**
     * 解决思路：
     * 如果root为空，那么树的深度就是0
     */
    public int maxDepth(Node root) {
        if (null == root) {
            return 0;
        }
        int result = 1;
        for (Node child : root.children) {
            result = Math.max(result, 1 + maxDepth(child));
        }
        return result;
    }
}
